Systems for time shifting a viewed program are known in the industry. For example, if a viewer is interrupted by a phone call during a television program, the program can be recorded for a few minutes and then played back from the point of interruption while addition video information is continually recorded. One prior art method of accomplishing time shifting is to capture the rendered video signal. When the rendered signal is an analog signal it is digitized and stored. When the rendered signal is a digital signal it can be captured directly. Once captured, the rendered digital data can be stored directly. A digital signal stored directly can require a large amount of storage space, even when only a few minutes of video are captured. The digital signal can be compressed to reduce the amount of storage space required. However, compressing a video signal requires additional processing power, resulting in additional costs.
As the use of digital video data becomes increasingly common, a method and apparatus for time shifting a digital program that is more efficient than those known in art would be advantageous. One known method to provide digital video data is to provide the data using a specific protocol that has the ability to transmit the digital video data in a compressed format. An example of one such format is known as MPEG-2, and has been approved by the International Organization for Standards (ISO) Moving Pictures Experts Group (MPEG group). MPEG-2 is a versatile communication standard that gives theoretical explanations needed to implement an MPEG-2 decoder through the syntax and semantics of coded bit-streams. MPEG-2 is an open standard and continues to evolve and be applied to a wide variety of applications ranging from video conferencing to High Definition Television (HDTV). The MPEG-2 standard, as a generic and open standard, is intended for variety of audio/video coding applications.
One method of transporting large amounts of various types of transport stream data is to use a multiplexed packetized data stream capable of carrying real-time multimedia programs. One example of a multiplexed packetized data stream is described in the standard ISO/IEC 13818-1 and will be referred to as a transport stream. Transport streams generally offer robustness for noisy channels and can carry multiple programs (like multiple TV services) within the same multiplex. The transport stream is based on 188 byte long packets that are well suited for hardware error correction and processing schemes needed in noisy environments, such as coaxial cable television networks and satellite transponders. Such a transport stream facilitates fast program access, channel hopping and synchronization between multiple programs within the transport stream.
A transport stream consists of fixed length packets based on 4 bytes of header followed by 184 bytes of data payload, where data payload is obtained by partitioning larger data blocks. For example, an elementary stream (ES) is a set of data generally consisting of compressed data from a single source, such as a video or audio source, with some additional ancillary data for identification, characterization and synchronization. ES streams are first packetized into either constant length or variable length Packetized Elementary Stream packets (PES packets) consisting of header and payload. Each PES packet header starts with start code (ox000001) followed with the stream id byte identifying type of ES underneath.
PES packets from various elementary streams are merged together to form a program (service) with its own system time clock (STC). All ES component streams within one program are synchronized have periodic PTS stamps corresponding to the STC counter to indicate the proper timing for each ES.
The relatively long and most often variable length PES packets are further packetized into shorter TS packets having a constant size of 188 bytes. A small and constant TS packet size makes error recovery easier and faster. Usually, the transport stream carries several programs, each with its own STC. Each TS packet consists of a TS Packet header with optional Adaptation Field followed by useful data payload containing portion of a PES packet. The TS header consists of a sync byte, flags, indicators information for error detection and timing and Packet_ID (PID) field used to identify elementary stream carried underneath of a PES packet. In addition to identifying specific elementary streams, one PID is used to identify a program specific Information (PSI) table data.
Each TS PSI table is sent in sections, usually occupying one or more TS packets. Four types of PSI tables exist: 1) Program Association Table (PAT) listing unique program_number (as an identifier of each program in one multiplex) and PID of the PMT table; 2) Program Map Table (PMT) listing PIDs of all component streams making a given program. PMT may be constructed for each program separately or be common for a group of programs; 3) Conditional Access Table (CAT) identifying PID of Entitlement Management Messages and ID of used conditional access system if any scrambling of TS or PES packets is done; 4) Private Table carrying Network Information Table (NIT) or private data.
The Hierarchical structure which exists between ES streams, PES and TP packets is illustrated in prior art FIGS. 1–4.
A method and apparatus for efficient time shifting of multiplexed packetized data streams, such as a packet stream, would be advantageous.